package com.shanyin.framework.common.base;

import java.util.List;
import java.util.Map;

/***
 ** @category 基类Service 所有service接口都需要继承该BaseService...
 ** @author qing.yunhui
 ** @email: 280672161@qq.com
 ** @createTime: 2018年5月23日上午10:14:20
 **/
public interface BaseService <MODEL, KEY>{

	/**
	 * <p>新增</p>
	 * @param model待操作的对象
	 * @return int 受影响的行数
	 * **/
	int save(MODEL model);
	
	/**
	 * <p>批量新增</p>
	 * @param models 待操作的对象集合
	 * @return int 受影响的行数
	 * */
	int saveBatch(List<MODEL> models);
	
	/**
	 * <p>更新</p>
	 * @param model(必须包含主键) 待操作的对象
	 * @return int 受影响的行数
	 * */
	int update(MODEL model);
	
	/**
	 * <p>根据给定id删除(逻辑删除)</p>
	 * @param id 
	 * @return int 受影响的行数
	 * */
	int deleteById(KEY id);
	
	/**
	 * <p>根据给定ids列表删除(逻辑删除)</p>
	 * @param ids 
	 * @return int 受影响的行数
	 * */
	int deleteBatchByIds(List<KEY> ids);
	
	/**
	 * <p>根据给定id查询对应model</p>
	 * @param id
	 * @return Model 
	 * */
	MODEL getById(KEY id);
	
	/**
	 * <p>根据给定条件统计符合条件的记录条数</p>
	 * @param map 待查询的条件
	 * */
	int queryCount(Map<String,Object> map);
	
	/**
	 * <p>根据给定参数查询符合条件的记录集</p>
	 * @param map
	 * @return List<Model> 
	 * */
	List<MODEL> query(Map<String, Object> map);

}
